Draft-js-plugins

Draft.js가 나올때 까지만 해도 TineMCE라던지, CKEditor라던지 등의 기존 에디터들이 있어서 뭐가 더 좋은게 있을지 몰랐는데, 이런게 오픈소스화의 힘이라고 보여집니다. 뭔가 중심을 잡아 주는 프로젝트를 만들고 plugin을 장착할 수 있는 구조가 만들어 지고 나니 사람들이 프로젝트를 확장하기 시작합니다.

2016/03/28 Editor’s choice

draft-js-plugins/draft-js-plugins
_draft-js-plugins - React Plugin Architecture for DraftJS including Slack-Like Emojis, FB-Like Mentions and Stickers_github.com

지금은 emoji, hash tag등의 플러그인 들이 만들어져 있습니다.

sticker 플러그 인을 한번 살펴 보겠습니다.

draft-js-plugins - High quality plugins for DraftJS with great UX
_Facebook’s rich-text editor framework DraftJS built on top of React allows you to create powerful editors. We built a…_www.draft-js-plugins.com

설치

npm install draft-js-sticker-plugin --save

소스

// It is important to import the Editor which accepts plugins.  
import Editor from 'draft-js-plugins-editor';  
import createStickerPlugin from 'draft-js-sticker-plugin';  
import React from 'react';  
import { fromJS } from 'immutable';  

// Creates an Instance. Passing in an Immutable.js List of stickers as an  
// argument.  
const stickers = fromJS({  
data: {  
'b3aa388f-b9f4-45b0-bba5-d92cf2caa48b': {  
id: 'b3aa388f-b9f4-45b0-bba5-d92cf2caa48b',  
url: '../images/unicorn-4.png',  
},  
'adec3f13-823c-47c3-b4d1-be4f68dd9d6d': {  
id: 'adec3f13-823c-47c3-b4d1-be4f68dd9d6d',  
url: '../images/unicorn-1.png',  
},  
},  
});  

const stickerPlugin = createStickerPlugin({ stickers });  

// The Editor accepts an array of plugins. In this case, only the stickerPlugin  
// is passed in, although it is possible to pass in multiple plugins.  
const MyEditor = ({ editorState, onChange }) =\> (  
<Editor  
editorState={ editorState }  
onChange={ onChange }  
plugins={ \[stickerPlugin\] }  
/\>  
);  

export default MyEditor;

아래와 같이 볼 수 있군요!

By Keen Dev on March 28, 2016.

Exported from Medium on May 31, 2017.